第二天我們稍微提到「網頁伺服器」可以顯示電腦裡的目錄,還可以顯示檔案的內容,與我們一般用電腦開啟word、ppt看報告一樣。
進階一點,我們借助瀏覽器的強大功能,就可以透過HTML靜態網頁去顯示美美的頁面、CSS樣式、JS動畫特效,並使用視訊鏡頭、音訊麥克風、GPS...等WebAPI。
看到這裡,原來一個伺服器,竟然就可以做到這麼多功能!難怪現代越來越多方便的線上服務了。
這也要讚嘆前人們努力結果,所謂的前人種樹後人乘涼。
不過昨天才講到網頁、檔案而已,怎麼上頭已經出現什麼API!這是什麼呀!?
ps. 若還沒閱讀過昨天的文章,這邊有[傳送門]
以下範例的程式碼可以在這邊下載
老樣子,我們先搜尋一下維基百科好了。
根據維基百科解釋
應用程式介面(英語:Application Programming Interface),縮寫為API,是一種計算介面,它定義了多個軟體中介之間的互動。它定義了可以進行的呼叫(call)或請求(request)的種類,如何進行呼叫或發出請求,應使用的資料格式,應遵循的慣例等。
好吧,這解釋看起來可能還是還是很抽象。沒錯!API本身就是一個抽象的東西,因為他只是一種溝通方式的名詞。
舉生活例子來說,白先生與黑小姐偶然在一場會議認識,並且相談甚歡,散場後說我們保持聯絡。
但是怎麼「聯絡」呢?其實我們可以說「聯絡」是一個API,讓白先生可以呼叫(call)黑小姐。
但是「聯絡」需要透過打電話、寫信、傳簡訊,還是透過視訊...等哪一種方式呢?其實這些方式都可以,只要能聯絡得到。
而這些方式要怎麼選用呢?就單純看白先生與黑小姐囉
所以我們知道API伺服器也是如同上面的概念,兩家不同的科技公司、或者兩個不同的部門團隊,怎麼使用伺服器做溝通呢?也是雙方溝通好,會出什麼樣功能的API,給對方去呼叫(call)。
當然實現API的方式有百百種,有HTTP、Web Socket、RPC...等方式去實現。
以下範例的程式碼可以在這邊下載
與昨天一樣,我選用Go語言
做示範。
想看昨天怎麼做「網頁伺服器」的人,這邊有傳送門
/
|-- main.go # 你沒看錯,只有一個檔案XD
package main
import (
"log"
"net/http"
)
func main() {
router := http.NewServeMux()
router.HandleFunc("/api-demo", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("你的名字是" + r.URL.Query().Get("name")))
})
log.Println("開始建立伺服器")
log.Fatal(http.ListenAndServe(":8000", router))
}
http://localhost:8000/api-demo
這時候我們在網址上加點手腳,加上?name=zuolar
就可以發現伺服器根據我們提供的資料,給對應的回覆了!
用瀏覽器去開啟連結就是「呼叫請求」(call request),而在網址加上資料name
就是一種資料傳輸的動作。
API本身就是一種讓人們可以互相溝通、互相遵循的說詞。
透過上面範例,我們知道伺服器除了用來顯示檔案頁面以外,還可以定義API讓人呼叫請求,並且得到資料的回傳。
進階一點的應用,我們還可以搭配資料庫,透過API請求,紀錄請求資料、顯示相關資料畫面、給予功能服務。
而平日生活,我們使用逛網購下訂單、玩遊戲、視訊聊天...等服務功能,也都是API的產物了。
明天我們要正式切入伺服器的配置,探討建置伺服器以外,我們還需要做哪些工作呢?明天再見囉
ps. 由於一些工作因素,差點趕不上截止時間,所以先發表文章以免中斷,敬請見諒